/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package conn.dao;

import java.sql.Statement;
import conn.bean.BAbonado;
import conn.bean.BDepartamento;
import conn.bean.BDireccion;
import conn.bean.BDistrito;
import conn.bean.BLinea;
import conn.bean.BProvincia;
import conn.bean.BTipoLinea;

//import com.nw.entity.Employee;

import java.util.ArrayList;
import java.util.List;
//import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DLinea extends DBase {

    public List getmodlineas() {
        List Lista = new ArrayList();
        Statement stmt = null;
        ResultSet res = null;

        BDireccion bdireccion = null;
        BDistrito bdistrito = null;
        BProvincia bprovincia = null;
        BDepartamento bdepartamento = null;
        BAbonado babonado = null;
        BLinea blinea = null;
        BTipoLinea btipolinea = null;
        /*
        Product bproducts = null;
        Category bcategory = null;
        Supplier bsupplier = null;*/

        this.init_mysql();  // se inicia la conección a la base de datos

        try {

            stmt = conn.createStatement();
            res = stmt.executeQuery(
                    "select l.idLinea,l.numero, dep.descripcion, prv.descripcion, dst.descripcion, dir.descripcion, tp.nombre "
                    + "from linea l, departamento dep, tipolinea tp, distrito dst, direccion dir, provincia prv, abonado ab "
                    + "where dir.idDireccion = ab.idDireccion and dir.idDistrito = dst.idDistrito and dst.idProvincia = prv.idProvincia and "
                    + "prv.idDepartamento = dep.idDepartamento and l.idabonado = ab.idAbonado and l.tipolinea = tp.idTipoLinea; ");

            while (res.next()) {

                bdepartamento = new BDepartamento(0, res.getString(3));
                /*public BDepartamento(int variddepartamento, String vardescripcion)*/
                bprovincia = new BProvincia(0, res.getString(4), bdepartamento);
                /*public BProvincia(int varidprovincia, String vardescripcion, BDepartamento vardepartamento)*/
                bdistrito = new BDistrito(0, res.getString(5), bprovincia);
                /*public BDistrito(int variddistrito, String vardescripcion, BProvincia varprovincia)*/
                bdireccion = new BDireccion(0, res.getString(6), bdistrito);
                /*public BDireccion(int variddireccion, String vardescripcion, BDistrito vardistrito)*/
                babonado = new BAbonado(0, null, null, null, null, null, null, bdireccion);
                /*public BAbonado (int varidabonado, String varnombre, String varapellidop, String varapellidom, String varsexo, String varestcivil,
                String varfechnac, BDireccion vardireccion)*/
                btipolinea = new BTipoLinea(0, res.getString(7));
                /*public BTipoLinea(int varidTipoLinea, String varnombre)*/
                blinea = new BLinea(res.getInt(1), res.getString(2), btipolinea, babonado);
                /*public BLinea(int varidlinea, String varnum, BTipoLinea vartipolinea, BAbonado varabonado)*/

                Lista.add(blinea);

            }

            res.close();
            stmt.close();
            conn.close();

        } catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    ;
                }
                res = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
        return Lista;
    }

    public List getLineasxCampana(int idCampana) {
        List Lista = new ArrayList();
        Statement stmt = null;
        ResultSet res = null;

        BDireccion bdireccion = null;
        BDistrito bdistrito = null;
        BProvincia bprovincia = null;
        BDepartamento bdepartamento = null;
        BAbonado babonado = null;
        BLinea blinea = null;
        BTipoLinea btipolinea = null;
        /*
        Product bproducts = null;
        Category bcategory = null;
        Supplier bsupplier = null;*/

        this.init_mysql();  // se inicia la conección a la base de datos

        try {

            stmt = conn.createStatement();
            res = stmt.executeQuery(
                    "select l.idLinea,l.numero, dep.descripcion, prv.descripcion, dst.descripcion, dir.descripcion, tp.nombre "
                    + "from linea l, departamento dep, tipolinea tp, distrito dst, direccion dir, provincia prv, abonado ab, lineaxcampana ll "
                    + "where dir.idDireccion = ab.idDireccion and dir.idDistrito = dst.idDistrito and dst.idProvincia = prv.idProvincia and "
                    + "prv.idDepartamento = dep.idDepartamento and l.idabonado = ab.idAbonado and l.tipolinea = tp.idTipoLinea and ll.idLinea=l.idLinea and  ll.idCampana=" + idCampana + "; ");

            while (res.next()) {

                bdepartamento = new BDepartamento(0, res.getString(3));
                /*public BDepartamento(int variddepartamento, String vardescripcion)*/
                bprovincia = new BProvincia(0, res.getString(4), bdepartamento);
                /*public BProvincia(int varidprovincia, String vardescripcion, BDepartamento vardepartamento)*/
                bdistrito = new BDistrito(0, res.getString(5), bprovincia);
                /*public BDistrito(int variddistrito, String vardescripcion, BProvincia varprovincia)*/
                bdireccion = new BDireccion(0, res.getString(6), bdistrito);
                /*public BDireccion(int variddireccion, String vardescripcion, BDistrito vardistrito)*/
                babonado = new BAbonado(0, null, null, null, null, null, null, bdireccion);
                /*public BAbonado (int varidabonado, String varnombre, String varapellidop, String varapellidom, String varsexo, String varestcivil,
                String varfechnac, BDireccion vardireccion)*/
                btipolinea = new BTipoLinea(0, res.getString(7));
                /*public BTipoLinea(int varidTipoLinea, String varnombre)*/
                blinea = new BLinea(res.getInt(1), res.getString(2), btipolinea, babonado);
                /*public BLinea(int varidlinea, String varnum, BTipoLinea vartipolinea, BAbonado varabonado)*/

                Lista.add(blinea);

            }

            res.close();
            stmt.close();
            conn.close();

        } catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    ;
                }
                res = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
        return Lista;
    }

    public void crearLinea(String numero, int tipoLinea, int idAbonado) {
        Statement stmt = null;
        ResultSet res = null;

        this.init_mysql();  // se inicia la conección a la base de datos

        try {

            stmt = conn.createStatement();
            stmt.executeUpdate(""
                    + " INSERT INTO linea "
                    + " (numero, tipoLinea,idAbonado)"
                    + " VALUES "
                    + " ('" + numero + "'," + tipoLinea + "," + idAbonado + ");");

            stmt.close();
            conn.close();

        } catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    ;
                }
                res = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
    }

    public int getUltimoId() {
        Statement stmt = null;
        ResultSet res = null;

        this.init_mysql();  // se inicia la conección a la base de datos
        int id = 0;
        try {

            stmt = conn.createStatement();
            res = stmt.executeQuery("SELECT MAX(idLinea) from linea");

            if (res.next()) {

                id = res.getInt(1);
            }

            res.close();
            stmt.close();
            conn.close();

        } catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    ;
                }
                res = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
        return id;
    }

    public boolean existeLineaxCampana(int idLinea, int idCampana) {
        boolean existe = false;
        Statement stmt = null;
        ResultSet res = null;

        this.init_mysql();  // se inicia la conección a la base de datos
        int id = 0;
        try {

            stmt = conn.createStatement();
            res = stmt.executeQuery("SELECT * from lineaxcampana where idCampana=" + idCampana + " and idLinea=" + idLinea + ";");

            if (res.next()) {
                existe = true;
            }

            res.close();
            stmt.close();
            conn.close();

        } catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    ;
                }
                res = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
        return existe;
    }

    public String getidlinea(String numLinea) {
        String idlinea = null;
        Statement stmt = null;
        ResultSet res = null;

        this.init_mysql();  // se inicia la conección a la base de datos
        int id = 0;
        try {

            stmt = conn.createStatement();
            res = stmt.executeQuery("SELECT idLinea from linea where numero=" + numLinea + ";");

            if (res.next()) {
                idlinea = res.getString(1);
            }

            res.close();
            stmt.close();
            conn.close();

        } catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    ;
                }
                res = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
        return idlinea;
    }
}
